package Interface.InterfaceDome001;

/**
 * ClassName:InterfacText001
 * Package:Interface
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/1/25-11:13
 * @Version:v1.0
 */
public class InterfaceText001 {
    /*
    * 接口的定义和使用
    * 1.接口用关键字interface来定义
    *       public interface 接口名 {}
    * 2.接口不能实例化
    * 3.接口和类之间是实现关系,通过implements关键字表示
    *   public class 类名 implements 接口名{}
    * 4.接口的子类(实现类)
    *   要么重写接口中的所有抽象方法
    *   要么是抽象类
    *
    * 注意1：接口和类的实现,可以单实现,也可以多实现
    *       public class 类名 implements 接口名1,接口名2{}
    * 注意2：实现类还可以在继承一个类的同时实现多接口
    *       public class 类名 extend 父类 implements 接口名1,接口名2{}
    *
    * 接口中成员特点
    * 1.成员变量
    *       只能是常量
    *       默认修饰符：public static final
    * 2.构造方法
    *       没有,接口不能有构造方法
    * 3.成员方法
    *       只能是抽象方法
    *       默认修饰符：public abstract
    *
    * 接口和类之间的关系
    * 1.类和类的关系
    *   继承关系,只能单继承,不能多继承,但是可以多层继承
    * 2.类和接口的关系
    *   实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
    * 3.接口和接口的关系
    *   继承关系,可以单继承,也可以多继承
    *
    * JDK8以后接口中新增的方法
    * 1.允许在接口中定义默认方法,需要使用关键字default修饰
    *   作用：解决接口升级的问题
    * 2.接口中默认方法的定义格式：
    *   格式：public default 返回值类型 方法名(参数列表)
    *   范例：public default void show(){}
    * 3.接口中默认方法的注意事项
    *   默认方法不是抽象方法,所以不强制重写,但是如果重写,重写的时候去掉default关键字
    *   public可以省略,default不能省略
    *   如果实现了多个接口,多个接口中存在的相同名字的默认方法,子类就必须对该方法进行重写
    *
    * 4.允许在接口中定义静态方法,需要用static修饰
    * 5.接口中的静态方法的定义格式
    *   格式：public static 返回值类型 方法名(参数列表){}
    *   范例：public static void show(){}
    * 6.接口中静态方法的注意事项
    *   静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
    *   public可以省略,static不能省略
    *
    * 7.接口中私有方法的定义
    *   格式1：private 返回值类型 方法名(参数列表){}
    *   范例1：private void show(){}
    *   格式2：private static 返回值类型 方法名(参数列表){}
    *   范例2：private static void show(){}
    *
    *
    * JDK7以前：接口中只能定义抽象定义
    * JDK8：接口可以定义有方法体的方法(默认,静态)
    * JDK9：接口可以定义私有方法
    * 私有方法分为两种：普通的私有方法,静态的私有方法
    *
    *
    * 接口的应用
    * 1.接口代表规则,是行为的抽象,想要让哪个类拥有一个行为,就让这个类实现对应的接口就可以
    * 2.当一个方法的参数是接口时,可以传递接口所有实现类对象,这种方式称为接口多态
    *
    * 适配器设计模式(设计模式就是各种套路)*/
}
